<!-- @format -->
<template>
  <div class="item">
    <img :src="url" />
    <p class="name">{{ title }}</p>
    <p class="price">{{ price }}</p>
    <button @click="kyd">砍一刀</button>
  </div>
</template>

<script>
  // 子传父的总结：
  // 1. 何时用：当子组件需要修改父组件数据的时候
  //   （因为vue是单向数据流，props是只读的，所以需要通知父组件）
  // 2. 口诀(步骤)：2步
  // (1). 父组件内，子组件的自定义标签上，通过自定义事件绑定父组件的methods方法（父监听）
  // (2). 子组件内，恰当时机，通过 this.$emit('自定义事件名称', 值) 触发父组件的自定义事件，
  //    并传递参数，从而导致父组件methods方法的执行（子触发）

  export default {
    name: 'MyGoods',
    props: ['url', 'title', 'price', 'i'],
    data() {
      return {
        n: 3
      }
    },
    methods: {
      kyd() {
        // 子组件负责通知老爹
        // 触发组件的自定义事件,并携带参数
        this.$emit('ccc', this.i, this.n)
      }
    }
  }
</script>

<style>
  .item {
    width: 240px;
    margin-left: 10px;
    padding: 20px 30px;
    transition: all 0.5s;
    margin-bottom: 20px;
  }

  .item:nth-child(4n) {
    margin-left: 0;
  }

  .item:hover {
    box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.2);
    transform: translate3d(0, -4px, 0);
    cursor: pointer;
  }

  .item img {
    width: 100%;
  }

  .item .name {
    font-size: 18px;
    margin-bottom: 10px;
    color: #666;
  }

  .item .price {
    font-size: 22px;
    color: firebrick;
  }

  .item .price::before {
    content: '¥';
    font-size: 14px;
  }
</style>
